/**
 * 聊天会话缓存工具
 * 使用localStorage存储会话列表，减少重复加载
 */

const CACHE_KEY_PREFIX = 'chat_sessions_'
const CACHE_EXPIRY = 5 * 60 * 1000  // ✅ 缩短为5分钟过期（避免缓存过期数据）
const CACHE_VERSION = '2.0'  // ✅ 添加版本号，用于强制失效旧缓存

/**
 * 获取缓存的会话列表
 */
export function getCachedSessions(clientId) {
  if (!clientId) return null
  
  const cacheKey = CACHE_KEY_PREFIX + clientId
  const cached = localStorage.getItem(cacheKey)
  
  if (!cached) return null
  
  try {
    const { data, timestamp, version } = JSON.parse(cached)
    
    // ✅ 检查版本号（强制失效旧版本缓存）
    if (version !== CACHE_VERSION) {
      console.log('[ChatCache] 缓存版本不匹配，清除旧缓存')
      localStorage.removeItem(cacheKey)
      return null
    }
    
    // 检查是否过期
    if (Date.now() - timestamp > CACHE_EXPIRY) {
      localStorage.removeItem(cacheKey)
      return null
    }
    
    return data
  } catch (error) {
    console.error('[ChatCache] 解析缓存失败:', error)
    localStorage.removeItem(cacheKey)
    return null
  }
}

/**
 * 缓存会话列表
 */
export function setCachedSessions(clientId, sessions) {
  if (!clientId || !sessions) return
  
  const cacheKey = CACHE_KEY_PREFIX + clientId
  const cacheData = {
    data: sessions,
    timestamp: Date.now(),
    version: CACHE_VERSION  // ✅ 保存版本号
  }
  
  try {
    localStorage.setItem(cacheKey, JSON.stringify(cacheData))
  } catch (error) {
    console.error('[ChatCache] 缓存失败:', error)
  }
}

/**
 * 清除指定客户端的缓存
 */
export function clearCachedSessions(clientId) {
  if (!clientId) return
  const cacheKey = CACHE_KEY_PREFIX + clientId
  localStorage.removeItem(cacheKey)
}

/**
 * 清除所有会话缓存
 */
export function clearAllCachedSessions() {
  const keys = Object.keys(localStorage)
  keys.forEach(key => {
    if (key.startsWith(CACHE_KEY_PREFIX)) {
      localStorage.removeItem(key)
    }
  })
}
